package com.zsrt.javaweb.bbu.book.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.zsrt.javaweb.bbu.book.dao.BookShopDao;
import com.zsrt.javaweb.bbu.book.service.BookShopService;

@Service("bookShopService")
public class BookShopServiceImpl implements BookShopService {
	
	@Autowired
	private BookShopDao bookShopDao;

	
	/**
	 * 使用propagation指定事务的传播行为：即当前的事务方法被另外一个事务方法调用时。如何使用事务
	 * 事务的传播行为默认就是： propagation=Propagation.REQUIRED  [简单说 有事务就行]
	 * 
	 * propagation=Propagation.REQUIRES_NEW 成功1个算1个 [2兄弟建房子 老大有30万 老二有20万 都想建1栋3层楼的房子要30万。如果2个一起建立。那么可以成功REQUIRED。如果分开建。老大成功，老二不成功。REQUIRES_NEW]
	 * 
	 */
	@Transactional(propagation=Propagation.REQUIRES_NEW)
	//@Transactional(propagation=Propagation.REQUIRED)
	@Override
	public void purchase(String username, int isbn) {
		
		//1 获取书的单价
		int price = bookShopDao.findBookPriceByIsbn(	isbn);
		
		//2 更新书的库存  -1
		bookShopDao.updateBookStock(	isbn);
		
		//3 更新用户余额  
		bookShopDao.updateUserAccount(username, price);

	}

}
